<?php
   
class Noticia{

	private $idNoticia;
	private $idAutor;
	private $dataHora;
	private $titulo;
	private $subtitulo;
	private $texto;
	private $imagemPrincipal;
	private $exibir;

	public function Noticia($idNoticia){
		
		$strQuery = "SELECT * FROM noticias WHERE idNoticia=". $idNoticia .";";		
			
		if(is_array($resultado  =  BancoDados::query($strQuery))){						
			$this->setIdNoticia($resultado[0]['idNoticia']);
			$this->setIdAutor($resultado[0]['idAutor']);
			$this->setDataHora($resultado[0]['dataHora']);
			$this->setTitulo($resultado[0]['titulo']);
			$this->setSubtitulo($resultado[0]['subtitulo']);
			$this->setTexto($resultado[0]['texto']);
			$this->setImagemPrincipal($resultado[0]['imagemPrincipal']);
			$this->setExibir($resultado[0]['exibir']);
						
		}else {
			$this->setIdNoticia(null);
		}
		
	}
	
	/**
	 * Pega todas as notícias para serem exibidas ou na página Principal ou na Inicial, dependendo do parâmetro passado
	 * @return array $resultado
	 * @param object $exibir
	 */
	public static function getNoticias($exibir, $ano = NULL, $mes = NULL, $exibirNaPrincipal = false, $ordenacaoAtual = 'dataHora', $ordemAtual = 'desc'){
		
		$strQuery = "SELECT idNoticia, idAutor, titulo, subtitulo, imagemPrincipal, dataHora FROM noticias WHERE exibir ='" . $exibir . "'";
		
		if($exibirNaPrincipal){
			$strQuery .= " ORDER BY " . $ordenacaoAtual . " " . $ordemAtual . " LIMIT 3;";			
		}else{		
			if(!$ano){
				//Exibir todas as noticias na Central de Notícias
				$strQuery .= " ORDER BY " . $ordenacaoAtual . " " . $ordemAtual . ";";
			}else{	
				$strQuery .= " AND  DATE_FORMAT(dataHora, '%Y')='" . $ano . "'";
				if(!$mes){	
					//Exibir notícias filtradas pelo ano na Central de Notícias
					$strQuery .= " ORDER BY " . $ordenacaoAtual . " " . $ordemAtual . ";";
				}else{
					//Exibir notícias filtradas pelo ano e pelo mês na Central de Notícias
					$strQuery .= " AND  DATE_FORMAT(dataHora, '%m')='" . $mes . "' ORDER BY " . $ordenacaoAtual . " " . $ordemAtual . ";";
				}
			}
		}
				
		if(is_array($resultado = BancoDados::query($strQuery))){     
			
			if(sizeof($resultado) > 0){
	
				$arrayNoticias = array();
				
				for($i = 0; $i < sizeof($resultado); $i++){
						
					$arrayNoticias[$i]['idNoticia'] = $resultado[$i]['idNoticia'];
					$arrayNoticias[$i]['titulo']    = $resultado[$i]['titulo'];
					$arrayNoticias[$i]['subtitulo'] = $resultado[$i]['subtitulo'];
				//	$arrayNoticias[$i]['texto']     = $resultado[$i]['texto'];
					
					if($resultado[$i]['imagemPrincipal'] != '')
						$arrayNoticias[$i]['imagemPrincipal'] = $resultado[$i]['imagemPrincipal'];
					else
						$arrayNoticias[$i]['imagemPrincipal'] = 'noticiadefault.png';
					
					$arrayDadosAutor                = Usuario::getUsuarioPorId($resultado[$i]['idAutor']);	
					$arrayNoticias[$i]['autor']     = nomeSobrenome($arrayDadosAutor['listaResultados'][0]['nome']);	
					
					$arrayNoticias[$i]['data']      = getDataFormatada($resultado[$i]['dataHora']);
					$array                          = explode('/',$arrayNoticias[$i]['data']);
					$dataAno                        = $array[2];
					$dataMes                        = $array[1];
					$arrayNoticias[$i]['hora']      = getHoraFormatada($resultado[$i]['dataHora']);	
					
					$tituloLink                     = preg_replace('#[^a-z0-9\.]#i','-', $resultado[$i]['titulo']);		
					$arrayNoticias[$i]['link']      = montalink(array('centraldenoticias', $dataAno, getStringMes($dataMes), $resultado[$i]['idNoticia'], $tituloLink));	
				
					
					$arrayNoticias[$i]['horaAutor'] = texto('TEXTO_HORA_AUTOR_NOTICIA',array($arrayNoticias[$i]['hora'],$arrayNoticias[$i]['autor'])); 										
				}		
						
				return array ('listaResultados' => $arrayNoticias);
				
			}else			 				
				return array();		
			
		}else 
			return false;
	}
	
	public static function getNoticiasAnos(){
				
		$strQuery = "SELECT DISTINCT DATE_FORMAT(dataHora, '%Y') as ano FROM noticias ORDER BY dataHora DESC";
		
		if(sizeof($resultado = BancoDados::query($strQuery))){
			return $resultado;
			
		}else{
			return false;
		}
	}
	
	public static function getNoticiasMeses($ano){
				
		$strQuery = "SELECT DISTINCT DATE_FORMAT(dataHora, '%m') as mes FROM noticias WHERE DATE_FORMAT(dataHora, '%Y')=". $ano ." ORDER BY mes ASC";

		if(sizeof($resultado = BancoDados::query($strQuery))){
			return $resultado;
			
		}else{
			return false;
		}
	}
	
	public static function getTotalNoticiasPorMes($ano,$mes){
		
		$strQuery = "SELECT COUNT(*) AS total FROM noticias WHERE exibir='" . $exibir . "' AND  DATE_FORMAT(dataHora, '%Y')='" . $ano . "' AND  DATE_FORMAT(dataHora, '%m')='" . $mes . ";";
		
		if(sizeof($resultado = BancoDados::query($strQuery))){
			return $resultado;
			
		}else{
			return false;
		}
	}
		
	public static function inserir($idUsuario, $strTitulo, $strSubTitulo, $fileFoto, $strTexto, $exibir){
		
		$strQuery = "LOCK TABLES noticias WRITE";
		if(BancoDados::query($strQuery)){
			$strQuery = 'INSERT INTO noticias VALUES(default, "'. $idUsuario. '", NOW(), "'. $strTitulo .'", "'. $strSubTitulo .'", "'. $strTexto .'", "", "'. $exibir .'")';
			if(BancoDados::query($strQuery)){
				$strQuery = "SELECT idNoticia FROM noticias ORDER BY idNoticia DESC LIMIT 1";
				if(sizeof($resultado = BancoDados::query($strQuery))){
					$idNoticia = $resultado[0]['idNoticia'];
				}
				$strQuery = "UNLOCK TABLES";
				if(BancoDados::query($strQuery)){
					if($fileFoto['name'] != ''){
						$arquivoFoto        = 'noticia' . $idNoticia . '.' . array_pop(explode('.', $fileFoto['name']));
						if(move_uploaded_file($fileFoto['tmp_name'], constant('__CAMINHO_FOTO_NOTICIA__') . $arquivoFoto)){
							$strQuery = "UPDATE noticias SET imagemPrincipal = '". $arquivoFoto ."' WHERE idNoticia = ". $idNoticia;
							if(!BancoDados::query($strQuery)){
								unlink(constant('__CAMINHO_FOTO_NOTICIA__') . $arquivoFoto);
								adicionaMensagem(texto('MENSAGEM_ERRO_NOTICIA_SALVAR_FOTO'),'erro');
							}
						}else{
							adicionaMensagem(texto('MENSAGEM_ERRO_NOTICIA_SALVAR_FOTO'),'erro');
						}
					}			
				}
				return true;
			}else{
				return false;
			}						
		}else{
			return false;
		}
							
	}
	
	public static function apagar($idNoticia) {
		$strQuery	=	'DELETE FROM noticias WHERE idNoticia = ' . $idNoticia . ';';
		
		return	BancoDados::query($strQuery);
	}
	
	/**
	* Returns $dataHora.
	* @see Noticia::$dataHora
	*/
	public function getDataHora()
	{
	   return $this->dataHora;
	}
	
	/**
	* Sets $dataHora.
	* @param object $dataHora
	* @see Noticia::$dataHora
	*/
	public function setDataHora($dataHora)
	{
	   $this->dataHora = $dataHora;
	}
	
	/**
	* Returns $exibir.
	* @see Noticia::$exibir
	*/
	public function getExibir()
	{
	   return $this->exibir;
	}
	
	/**
	* Sets $exibir.
	* @param object $exibir
	* @see Noticia::$exibir
	*/
	public function setExibir($exibir)
	{
	   $this->exibir = $exibir;
	}
	
	/**
	* Returns $idAutor.
	* @see Noticia::$idAutor
	*/
	public function getIdAutor()
	{
	   return $this->idAutor;
	}
	
	/**
	* Sets $idAutor.
	* @param object $idAutor
	* @see Noticia::$idAutor
	*/
	public function setIdAutor($idAutor)
	{
	   $this->idAutor = $idAutor;
	}
	
	/**
	* Returns $idNoticia.
	* @see Noticia::$idNoticia
	*/
	public function getIdNoticia()
	{
	   return $this->idNoticia;
	}
	
	/**
	* Sets $idNoticia.
	* @param object $idNoticia
	* @see Noticia::$idNoticia
	*/
	public function setIdNoticia($idNoticia)
	{
	   $this->idNoticia = $idNoticia;
	}
	
	/**
	* Returns $imagemPrincipal.
	* @see Noticia::$imagemPrincipal
	*/
	public function getImagemPrincipal()
	{
	   return $this->imagemPrincipal;
	}
	
	/**
	* Sets $imagemPrincipal.
	* @param object $imagemPrincipal
	* @see Noticia::$imagemPrincipal
	*/
	public function setImagemPrincipal($imagemPrincipal)
	{
	   $this->imagemPrincipal = $imagemPrincipal;
	}
	
	/**
	* Returns $subtitulo.
	* @see Noticia::$subtitulo
	*/
	public function getSubtitulo()
	{
	   return $this->subtitulo;
	}
	
	/**
	* Sets $subtitulo.
	* @param object $subtitulo
	* @see Noticia::$subtitulo
	*/
	public function setSubtitulo($subtitulo)
	{
	   $this->subtitulo = $subtitulo;
	}
	
	/**
	* Returns $texto.
	* @see Noticia::$texto
	*/
	public function getTexto()
	{
	   return $this->texto;
	}
	
	/**
	* Sets $texto.
	* @param object $texto
	* @see Noticia::$texto
	*/
	public function setTexto($texto)
	{
	   $this->texto = $texto;
	}
	
	/**
	* Returns $titulo.
	* @see Noticia::$titulo
	*/
	public function getTitulo()
	{
	   return $this->titulo;
	}
	
	/**
	* Sets $titulo.
	* @param object $titulo
	* @see Noticia::$titulo
	*/
	public function setTitulo($titulo)
	{
	   $this->titulo = $titulo;
	}
			
}
?>